package cn.com.shopec.erp.stock.service;

import java.util.List;

import cn.com.shopec.erp.common.page.PageFinder;
import cn.com.shopec.erp.common.page.PageQuery;
import cn.com.shopec.erp.stock.entity.StockOut;
import cn.com.shopec.erp.stock.entity.StockOutProduct;
import cn.com.shopec.erp.stock.vo.StockOutProductVo;
import cn.com.shopec.erp.stock.vo.StockOutVo;

/**
 * @ClassName: IStockOutService
 * @Description: 出库service接口
 * @author: zengxuezhou
 * @date: 2016年11月28日 下午2:10:38
 */
public interface IStockOutService {

	/**
	 * 分页查询出库信息
	 * @param stockOut
	 * @param pageQuery
	 * @return
	 */
	PageFinder<StockOutVo> queryStockList(StockOutVo stockOut, PageQuery pageQuery);

	/**
	 * 分页查询出库商品信息
	 * @param stockOut
	 * @param pageQuery
	 * @return
	 */
	PageFinder<StockOutProductVo> queryStockProductList(StockOutVo stockOut, PageQuery pageQuery);

	/**
	 * 分页查询出库商品信息（调拨入库用）
	 * @param stockInTypeNo
	 * @param pageQuery
	 * @return
	 */
	PageFinder<StockOutProductVo> queryStockProductListForTransfer(String stockInTypeNo, PageQuery pageQuery);

	/**
	 *  根据出库编号获取出库信息
	 * @param stockOutNo
	 * @return
	 */
	StockOutVo getStockByNo(String stockOutNo);

	/**
	 * 删除出库信息(包括其下的所有商品信息)
	 * @param stockOutNo
	 * @return
	 * @throws Exception
	 */
	boolean deleteStockOut(String stockOutNo) throws Exception;

	/**
	 * 添加出库信息(包括其下的所有商品信息)
	 *
	 * @param stockOut
	 * @param stockOutProducts
	 * @return
	 * @throws Exception
	 */
	boolean addStockOut(StockOut stockOut, List<StockOutProduct> stockOutProducts) throws Exception;
	
	/**
	 * 删除出库商品信息
	 * @param id
	 * @return
	 * @throws Exception
	 */
	boolean deleteStockOutProduct(String id) throws Exception;

	/**
	 * 出库审核
	 * @param stockOutId
	 * @return
	 * @throws Exception
	 */
	void approveStockOut(StockOutVo stockOutVo, List<StockOutProduct> stockOutProducts) throws Exception;

	/**
	 * 出库审核
	 * @param stockOutId
	 * @param stockOutProducts
	 * @return
	 * @throws Exception
	 */
	void approveStockOut(String stockOutId, List<StockOutProduct> stockOutProducts) throws Exception;

	/**
	 * 查询出库商品信息（不分页）
	 * @param stockOut
	 * @return
	 */
	List<StockOutVo> queryStockOutListByFinder(StockOutVo stockOut);


}
